package com.zjw.study.thread04_sharedata;

/**
 * 多个线程之间共享数据（执行顺序随机）
 * 
 * 习题：
 * 设计4个线程，其中两个线程对j加1，另外两个线程对j减1
 * @author Administrator
 *
 */
public class MoreShare {
	public static void main(String[] args) {
		MoreShare ms = new MoreShare();
		ms.share01();
	}
	
	/**
	 * 答题方法
	 */
	void share01() {
		SingleShareData sd = new SingleShareData();
		
		for (int i = 0; i < 2; i++) {
			//--------------- 加
			new Thread(new Runnable() {
				@Override
				public void run() {
					sd.increment(false);
				}
			}).start();
			
			//-------------- 减
			new Thread(new Runnable() {
				@Override
				public void run() {
					sd.increment(true);
				}
			}).start();
		}
		
	}

}

/**
 * 数据处理
 * @author Administrator
 *
 */
class SingleShareData {
	/**
	 * 要共享的数据变量
	 */
	int j = 0;
	
	/**
	 * 数据操作
	 * @param decrement true：减，false：加
	 */
	public void increment(boolean decrement) {
		if(decrement) {
			this.j --;
		} else {
			this.j ++;
		}
		System.out.println(Thread.currentThread().getName() + " -- " + decrement + " , j=" + j);
	}
}